/*                          UX-Framework                               
 *                                                                 
 *  iZE Co.,Ltd. Copyright 2009 All rights reserved.          
 *  This file is distributed under the terms of the GNU Lesser 
 *  General Public License, described in file LICENSE.                                     
 */
package jp.ize.ux;

#if flash9
import flash.events.FocusEvent;
#end

#if flash9
// {{{ class UXFocusEvent extends FocusEvent
/** 
 * UXFocusEventクラス<br>
 */
class UXFocusEvent extends FocusEvent
{
	// {{{ properties

	/** FocusEventとUXFocusEventを区別する為に用います。*/
	public static var hint : String = "__UX__UXFocusEvent";

	// }}}
	// {{{ public var got(default, null) : UXObject
	/**
	 * フォーカスを得たオブジェクト
	 */
	public var got(default, null) : UXObject;
	// }}}
	// {{{ public var lost(default, null) : UXObject
	/**
	 * フォーカスを失ったオブジェクト
	 */
	public var lost(default, null) : UXObject;
	// }}}
	// {{{ public function new( type : String ) 
	/**
	 * コンストラクタです。
	 */
	public function new( type : String ) 
	{
		super( type );
		// TODO set got and lost.
	}
	// }}}
}
// }}}
#end
// {{{ class UXFocusManager
/** 
 * UXFocusManagerクラス<br>
 * フォーカス対象のオブジェクト配列を管理し、フォーカス対象が唯一になるよう管理するクラスです。<br>
 *
 * @author		iZE Co., Ltd.<br>
 * @version		$Id$<br>
 */
class UXFocusManager
{
	// {{{ properties

	private var _focusee : Array<UXObject>;
	private var _focusIndex : Int;

	// }}}
	// {{{ public var cyclick(default, default) : Bool
	/**
	 * フォーカス移動を循環的にするかどうかのフラグです。デフォルトはtrueです。
	 */
	public var cyclick(default, default) : Bool;
	// }}}
	// {{{ public function new()
	/**
	 * コンストラクタ
	 */
	public function new()
	{
	}
	// }}}
	// {{{ public function addFocusee( fs : UXObject ) : Void
	/**
	 * 指定されたオブジェクトをフォーカス管理下に置きます。
	 */
	public function addFocusee( fs : UXObject ) : Void
	{
	}
	// }}}
	// {{{ public function removeFocusee( fs : UXObject ) : Void
	/**
	 * 指定されたオブジェクトが管理下にあれば、そのオブジェクトを管理から外します。
	 */
	public function removeFocusee( fs : UXObject ) : Void
	{
	}
	// }}}
	// {{{ public function sort() : Void
	/**
	 * 登録されているオブジェクトをfocusIndexの小さい順に(安定ソートで)並べます。この順番がフォーカス移動の
	 * 順番になります。
	 */
	public function sort() : Void
	{
	}
	// }}}
	// {{{ public function next() : Void
	/**
	 * focusIndex順にフォーカスを次へ移します。もし同じ数字のfocusIndexをもつオブジェクトが複数ある場合には、
	 * 配列に格納されている順番でフォーカスの移動先が決められます。
	 */
	public function next() : Void
	{
		/* UXObjectのputEventメソッドにUXFocusEventイベントを投げます*/
	}
	// }}}
	// {{{ public function previous() : Void
	/**
	 * focusIndex順にフォーカスを前へ移します。もし同じ数字のfocusIndexをもつオブジェクトが複数ある場合には、
	 * 配列に格納されている順番でフォーカスの移動先が決められます。
	 */
	public function previous() : Void
	{
		/* UXObjectのputEventメソッドにUXFocusEventイベントを投げます*/
	}
	// }}}
 	// {{{ public function setFocus( fs : UXObject ) : Void
	/**
	 * 指定されたオブジェクトが管理下にあれば、指定されたにオブジェクトにフォーカスを移します。
	 */
	public function setFocus( fs : UXObject ) : Void
	{
		/* UXObjectのputEventメソッドにUXFocusEventイベントを投げます*/
	}
	// }}}
}
// }}}
